package conf

import (
	"encoding/json"
	"io/ioutil"
)

type Config struct {
	ServerId int //服务器Id
	// TODO 这三个理论上是根据服务器id 去读取数据库得到的
	Name    string //当前服务器名称
	Host    string //服务器主机IP
	TcpPort int    //服务器端口

	// 网络相关配置
	MaxPacketSize    uint32 //都需数据包的最大值
	WorkerPoolSize   uint32 //业务工作Worker池的数量
	MaxWorkerTaskLen uint32 //业务工作Worker对应负责的任务队列最大任务存储数量
	MaxMsgChanLen    uint32 //消息最大长度
	ConfFilePath     string
}

// GameConfig
/*
   定义一个全局的对象
*/
var GameConfig *Config

// Reload 读取用户的配置文件
func (g *Config) Reload() {
	data, err := ioutil.ReadFile("conf/server.json")
	if err != nil {
		panic(err)
	}
	//将json数据解析到struct中
	//fmt.Printf("json :%s\n", data)
	err = json.Unmarshal(data, &GameConfig)
	if err != nil {
		panic(err)
	}
}

// InitConfig /*
func InitConfig() {
	//初始化GlobalObject变量，设置一些默认值
	GameConfig = &Config{
		MaxPacketSize:    4096,
		WorkerPoolSize:   10,
		MaxWorkerTaskLen: 1024,
		//MaxMsgChanLen
		ConfFilePath: "conf/server.json",
	}

	//从配置文件中加载一些用户配置的参数
	GameConfig.Reload()
}
